﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionaleLib;
using GestionaleLib.Controller;

namespace Leaf.View.Magazzino
{
    public partial class frmMovimentaProdotto : Form
    {
        private Prodotto Prodotto;
        private ctrlMagazzino.Causale Causale;
        private frmElencoMagazzino RifElencoMagazzino;

        public frmMovimentaProdotto(Prodotto Prodotto, 
            ctrlMagazzino.Causale Causale,frmElencoMagazzino RifElencoMagazzino=null)
        {
            InitializeComponent();
            this.Prodotto = Prodotto;
            this.Causale = Causale;
            this.RifElencoMagazzino = RifElencoMagazzino;
            ImpostaStato();
            Carica();
        }
        private void ImpostaStato()
        {
            if (Causale == ctrlMagazzino.Causale.CA)
                this.Text = "Carica un prodotto";
            else if (Causale == ctrlMagazzino.Causale.SC)
                this.Text = "Scarica un prodotto";
        }
        private void Carica()
        {
            if (Prodotto != null)
                lblProdotto.Text = "" + Prodotto.Descrizione;
        }
        private void cmdAnnulla_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void Conferma()
        {
            try
            {
                if (txtQuantitaDaCaricare.Text.Trim().Equals(""))
                {
                    MessageBox.Show("Il valore inserito non è valido");
                    return;
                }
                GestionaleLib.Magazzino MovimentoMagazzino = new GestionaleLib.Magazzino();
                MovimentoMagazzino.Prodotto = Prodotto;
                MovimentoMagazzino.Causale = Causale.ToString();
                MovimentoMagazzino.Data = DateTime.Now;
                MovimentoMagazzino.Quantita = Convert.ToInt16(txtQuantitaDaCaricare.Text);
                if (Causale == ctrlMagazzino.Causale.CA)
                    new ctrlMagazzino().Carica(MovimentoMagazzino);
                else if (Causale == ctrlMagazzino.Causale.SC)
                    if (new ctrlMagazzino().Scarica(MovimentoMagazzino) == ctrlMagazzino.Insert.NonScaricabile)
                    {
                        MessageBox.Show("Hai cercato di scaricare più prodotti della quantità che hai in magazzino");
                        return;
                    }

                if (RifElencoMagazzino != null)
                    RifElencoMagazzino.Aggiorna();
                this.Close();
            }
            catch (FormatException)
            {
                MessageBox.Show("Dati non validi o non inseriti");
            }
            catch (ExceptionErroreInserimento)
            {
                MessageBox.Show("Errore durante la procedura");
            }
        }
        private void cmdConferma_Click(object sender, EventArgs e)
        {
            Conferma();
        }
    }
}
